// pages/main/main.js
var app = getApp()
Page({

  /**
   * 页面的初始数据
   */
  data: {
    
    // 判断变量
    isSearch:false,
    isShow:false,
    isLoading: false,
    isBottom: false,

    // 用户信息
    userMsg: {},
    userInfo: {},
  
    provinces: [
      {
        value: 0,
        text: '全国'
      },
      {
        value: 1,
        text: '广东'
      },
      {
        value: 2,
        text: '湖南'
      },
      {
        value: 3,
        text: '江西'
      },
      {
        value: 4,
        text: '浙江'
      },
      {
        value: 5,
        text: '河北'
      },
      {
        value: 6,
        text: '陕西'
      },
      {
        value: 7,
        text: '山西'
      },
      {
        value: 8,
        text: '新疆'
      }, 
      {
        value: 9,
        text: '辽宁'
      },
      {
        value: 10,
        text: '内蒙古'
      },
      {
        value: 11,
        text: '黑龙江'
      },
      {
        value: 12,
        text: '吉林'
      },
      {
        value: 13,
        text: '江苏'
      },
      {
        value: 14,
        text: '安徽'
      },
      {
        value: 15,
        text: '福建'
      },
      {
        value: 16,
        text: '山东'
      }, 
      {
        value: 17,
        text: '河南'
      },
      {
        value: 18,
        text: '湖北'
      },
      {
        value: 19,
        text: '广西'
      },
      {
        value: 20,
        text: '海南'
      },
      {
        value: 21,
        text: '四川'
      },
      {
        value: 22,
        text: '贵州'
      },
      {
        value: 23,
        text: '云南'
      },
      {
        value: 24,
        text: '西藏'
      },
      {
        value: 25,
        text: '甘肃'
      },
      {
        value: 26,
        text: '青海'
      },
      {
        value: 27,
        text: '宁夏'
      },
      {
        value: 28,
        text: '北京'
      },
      {
        value: 29,
        text: '重庆'
      },
      {
        value: 30,
        text: '上海'
      },
      {
        value: 31,
        text: '天津'
      }
    ],

    priority: [
      { 
        value: 0, 
        text: '学校优先' 
      },
      { 
        value: 1, 
        text: '专业优先' 
      },
    ],

    // 双向绑定搜索框、下拉框值
    searchValue: "",
    provinceValue: 0,
    priorityValue: 0,

    // 页码
    searchPage: 1,
    page: 1,
    pageSize: 20,

    // 储存大学列表
    universityList: [], // 最终展示的大学列表
    searchUniversityList: [], // 搜索得到的大学列表
    matchUniversityList: [], // 匹配得到的大学列表
  },

  // 跳转登录页
  toLogin(){
    wx.redirectTo({
      url: '/login/pages/login/login',
    })
  },

  // 跳转学校详情页
  toUnivInfo(){
    wx.navigateTo({
      url: '/university/pages/univInfo/univInfo',
    })
  },

  bindViewTap() {
    wx.switchTab({
      url: '/pages/myInfo/myInfo'
    })
  },

  // 监听搜索框 
  // 当搜索框清零时回到匹配列表
  // 得到搜索框的修改信息，把搜索学校列表清空，重新从服务器获取匹配学校列表
  onChange(e) {
    if(e.detail == ""){
      this.onClear();
    }
  },
  onSearch(e) {
    // 增加判空，不允许用户搜索空值
    if(e.detail == ""){
      wx:wx.showToast({
        title: '搜索框不能为空',
        icon: 'none'
      })
      this.onClear();
      return;
    }
    this.setData({
      searchPage: 1,
      searchUniversityList: [],
      isSearch: true,
      isBottom: false
    })
    setTimeout(()=>{
      this.getSearchUniversity()
    },100)
  },
  onClear() {
    this.setData({
      isSearch: false,
      universityList: this.data.matchUniversityList[0],
      page: 1
    })
    while(this.data.matchUniversityList[this.data.page]){
      this.setData({
        page: this.data.page+1,
        universityList: [...this.data.universityList,...this.data.matchUniversityList[this.data.page]]
      })
    }
  },

  // 监听下拉菜单
  // 得到下拉菜单的切换信息，把匹配学校列表清空，重新从服务器获取匹配学校列表
  onProvinceChange(e){
    this.setData({
      provinceValue: e.detail,
      page: 1,
      matchUniversityList: []
    })
    this.getUniversityList()
  },
  onPriorityChange(e){
    this.setData({
      priorityValue: e.detail,
      page: 1,
      matchUniversityList: []
    })
    this.getUniversityList()
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    //从缓存中获取用户信息
    var that = this;
    try {
      let value = wx.getStorageSync('userInfo')
      if (value) {
        that.setData({
          userInfo: value
        });
      }
    }catch (e) {
    }

    //从缓存中同步获取考生信息
    try {
      let value = wx.getStorageSync('isShow')
      if (value) {
        that.setData({
          isShow: value
        });
        try {
          let value = wx.getStorageSync('userMsg')
          if (value) {
            that.setData({
              userMsg: value
            });
          }
        } catch (e) {
          if(that.data.isShow == true){
            wx:wx.showToast({
              title: '请登录或输入高考信息',
              icon: "none"
            })
          }
        }
      }
    } catch (e) {
    }

    // 获取匹配学校列表
    // console.log(this.data.userInfo.nickName)
    this.getUniversityList()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    let that = this;
    // 获取缓存中是否给予显示的信息
    wx.getStorage({
      key:"isShow",
      success:function(res){
        that.setData({
          isShow: res.data
        });
      }
    })
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    if(this.data.isLoading) return;
    // console.log("是否处于搜索状态:" + this.data.isSearch)
    // 如果处于搜索状态，上拉触底
    if(this.data.isSearch && !this.data.isBottom) {
      this.setData({
        searchPage: this.data.searchPage + 1
      })
      console.log("搜索第" + this.data.searchPage + "页")
      console.log("是否到底：" + this.data.isBottom)
      this.getSearchUniversity();
    }

    // 匹配状态上拉触底
    else{
      // if(this.data.matchUniversityList[this.data.page]){
      //   this.setData({
      //     page: this.data.page + 1,
      //     universityList: [...this.data.universityList,...this.data.matchUniversityList[this.data.page]]
      //   })
      //   console.log("匹配第" + this.data.page + "页")
      // }else{
        // wx:wx.showToast({
        //   title: '已经结束咧',
        //   icon:'none'
        // })
      // }
      this.setData({
        isBottom:true
      })
    }
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },

  // 从服务器获取大学列表
  getUniversityList(){
    this.setData({
      isLoading: true
    })
    wx.showLoading({
      title: '正在匹配学校...',
    })
    wx.request({
      url: app.globalData.requestUrl + '/school/matchschoolList',
      method: 'GET',
      data: {
        page: this.data.page,
        limit: this.data.pageSize,
        proviceValue: this.data.provinces[this.data.provinceValue].text,
        // 学校优先：0,专业优先：1
        priorityValue: this.data.priorityValue,
        st_score: this.data.userMsg.score,
        st_ranking: this.data.userMsg.ranking,
        subject: this.data.userMsg.mainSubject,
        username:this.data.userInfo.nickName
      },
      success: (res) => {
        wx.hideLoading()
        this.setData({
          isLoading: false
        })
        console.log(res.data)
        // 返回信息成功
        if(res.data.code == 204){
          this.setData({
            matchUniversityList: [...this.data.matchUniversityList, ...res.data.obj.data]
          })
          console.log(this.data.matchUniversityList)
        }

        // 未有匹配信息或查询信息已经全部返回
        else if(res.data.code == 404){
          this.setData({
            matchUniversityList: [[]],
            isBottom:true
          })
          wx:wx.showToast({
            title: '这个省没有学校适合你哦',
            icon: 'none'
          })
        }

        else if(res.data.code == 410){
          this.setData({
            matchUniversityList: [...this.data.matchUniversityList, ...res.data.obj.data]
          })
          console.log(this.data.matchUniversityList)
        }

        // 把匹配学校列表数据放入展示列表中进行展示
        this.setData({
          universityList: this.data.matchUniversityList[0]
        })
        while(this.data.matchUniversityList[this.data.page]){
          this.setData({
            page: this.data.page+1,
            universityList: [...this.data.universityList,...this.data.matchUniversityList[this.data.page]]
          })
        }
      },
      fail: (res) => {
        wx:wx.showToast({
          title: '网络异常，稍后再试',
          icon: 'none'
        })
      },
      complete: () => {
        
      }
    })
  },

  //模糊搜索从服务器获取大学列表
  getSearchUniversity(){
    this.setData({
      isLoading: true
    })
    wx.showLoading({
      title: '正在搜索...',
    })
    wx.request({
      url: app.globalData.requestUrl + '/school/searchSchoolInfo',
      method: 'GET',
      data: {
        // 输入框参数
        schoolMsg: this.data.searchValue,
        // 页码
        page: this.data.searchPage,
        // 获取数
        limit: this.data.pageSize
      },
      header: {
        "content-type": "application/x-www-form-urlencoded"
      },
      success: (res) => {
        console.log(res.data)
        if(res.data.code == 202){
          if(res.data.obj.data.length==0){
            if(this.data.searchPage == 1){
              this.setData({
                searchUniversityList: [],
                universityList: this.data.searchUniversityList
              })
              wx.showToast({
                title: '未找到相关的院校',
                icon:'none'
              })
            }
            this.setData({
              isBottom:true
            })
            return
          }
          this.setData({
            searchUniversityList: [...this.data.searchUniversityList,...res.data.obj.data],
          })
          console.log(this.data.searchUniversityList)

          // 把搜索学校列表数据放入展示列表中进行展示
          this.setData({
            universityList: this.data.searchUniversityList
          })
        }
        else if(res.data.code == 401){
          wx:wx.showToast({
            title: '服务器异常，稍后再试',
            icon: "none"
          })
          this.onClear()
        }
      },
      fail: (res) => {
        wx:wx.showToast({
          title: '网络异常，稍后再试',
          icon: "none"
        })
        this.onClear()
      },
      complete: () => {
        wx.hideLoading()
        this.setData({
          isLoading: false
        })
      }
    })
  }
})